From: Roger Pau Monne Date: Tue, 17 Jul 2018 09:48:26 +0000 (+0200) Subject: rangeset: introduce rangeset_merge X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~3128 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:///%22http:/www.example.com/cgi/%22https:/?a=commitdiff_plain;h=761de0b8920c35993a0b6559ceb416155ac5407a;p=xen.git rangeset: introduce rangeset_merge This new helper will merge two rangesets. Signed-off-by: Roger Pau Monné Acked-by: Wei Liu --- diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c index e3857ab816..f34cafdc7e 100644 --- a/xen/common/rangeset.c +++ b/xen/common/rangeset.c @@ -384,6 +384,18 @@ int rangeset_consume_ranges(struct rangeset *r, return rc; } +static int merge(unsigned long s, unsigned long e, void *data) +{ + struct rangeset *r = data; + + return rangeset_add_range(r, s, e); +} + +int rangeset_merge(struct rangeset *r1, struct rangeset *r2) +{ + return rangeset_report_ranges(r2, 0, ~0ul, merge, r1); +} + int rangeset_add_singleton( struct rangeset *r, unsigned long s) { diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h index 583b72bb0c..0c05c2fd4e 100644 --- a/xen/include/xen/rangeset.h +++ b/xen/include/xen/rangeset.h @@ -80,6 +80,9 @@ int rangeset_consume_ranges(struct rangeset *r, void *, unsigned long *c), void *ctxt); +/* Merge rangeset r2 into rangeset r1. */ +int __must_check rangeset_merge(struct rangeset *r1, struct rangeset *r2); + /* Add/remove/query a single number. */ int __must_check rangeset_add_singleton( struct rangeset *r, unsigned long s);